// #include "gtest/gtest.h"
// #include "../log.h"

// class LogTest : public ::testing::Test
// {
// protected:
//     void SetUp() override
//     {
//         // 初始化日志实例，设置为同步模式
//         Log::Instance()->init(1, "./test_log", ".txt", 0);
//     }

//     void TearDown() override
//     {
//         // 在每个测试用例结束后清理日志实例资源
//         Log::Instance()->flush();
//     }
// };

// TEST_F(LogTest, SyncWriteAndRotate)
// {
//     // 测试同步写入及日志文件按天滚动
//     Log::Instance()->SetLevel(0); // 设置最低日志级别为DEBUG

//     // 写入今天的日志
//     LOG_DEBUG("Debug message on the same day.");
//     EXPECT_TRUE(Log::Instance()->IsOpen());

//     // 模拟跨过一天，然后再次写入
//     // 这里通常需要模拟时间变化，此处简化不实现
//     // ...
//     LOG_DEBUG("Debug message on the next day.");

//     // 验证日志文件已正确切分
//     // 这里的验证可以通过检查目录下文件的数量和内容来完成
//     // 在实际测试中可能需要对文件系统进行查询，此处省略这部分代码
// }

// TEST_F(LogTest, LogLevelFiltering)
// {
//     // 测试日志级别过滤
//     Log::Instance()->SetLevel(2); // 设置日志级别为WARN及以上
//     // LOG_DEBUG、LOG_INFO、LOG_WARN 和 LOG_ERROR 四种级别
//     LOG_DEBUG("This debug message should not be logged.");
//     LOG_INFO("Neither should this info message.");
//     LOG_WARN("But this warning should appear in the log.");

//     // 对于日志文件内容的检查，同样需要访问文件系统并分析日志文件
//     // 这里假设我们有某种方法来验证警告消息被成功写入，而调试和信息消息未被写入
// }

// TEST_F(LogTest, AsyncWriting)
// {
//     // 测试异步写入功能
//     // 由于异步写入涉及到线程间交互，这里的测试会更复杂
//     // 我们首先重置为异步模式
//     Log::Instance()->init(1, "./async_log", ".txt", 1024);

//     // 写入大量日志以触发异步写入
//     for (int i = 0; i < 1000; ++i) {
//         LOG_INFO("Asynchronous log message %d.", i);
//     }

//     // 等待一定时间，允许写线程处理完队列中的日志
//     // 在实际测试中可能需要使用条件变量或者其他同步机制
//     // ...
    
//     // 验证日志文件内容，确认所有异步写入的日志都已成功写入文件
//     // 并且在高压力情况下仍保持正确的顺序
// }

// int main(int argc, char **argv)
// {
//     ::testing::InitGoogleTest(&argc, argv);
//     return RUN_ALL_TESTS();
// }